/**
 * @author caesar
 * @date 2025/7/1
 * @apiNote
 */
/*
直接选择排序优化
思路：
直接选择排序的思路是找到最小的数，放在最前面，然后从第二位开始，找到最小的数，放在第二位，依次类推，直到最后
这里的想法是，总归是为了找最小，所以直接在后面找相对最小，和当前数据交换，直到最后，排序完成
没有优化之前的话，是因为只要右边的一个值比当前值小，就需要进行交换
优化之后，是在后面的遍历过程中，找到一个最小值，再和当前值进行交换，交换次数减少了，这样效率更高
*/
public class selectSortOptimize {
    public static void main(String[] args) {
        int[] arr = {5, 3, 2, 1, 4};
        for (int i = 0; i < arr.length - 1; i++) {
            int min = arr[i];
            int index = i;

            for (int j = i + 1; j < arr.length ; j++) {
                if (min > arr[j]) {
                    min = arr[j];
                    index = j;
                }
            }

            if (index != i) {
                int t = arr[i];
                arr[i] = arr[index];
                arr[index] = t;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
